package com.atguigu.g_nonameclass;
/*
    匿名内部类的本质 : 接口/父类/抽象父类的一个不知类名的实现类

    匿名内部类匿掉的是 实现类/子类的类名

    匿名内部类对象 : 这个匿掉类名的类的对象
 */
public class Demo {
    public static void main(String[] args) {
        //创建子类对象
        Zi zi = new Zi();
        zi.show();
        zi.show();


        //场景 : 假设InterFu的子类只是用一次 !
        //那么没有必要专门创建一个java文件,专门准备一个有名字的子类去实现
        //现在可以使用匿名内部类解决此问题 :
        //父引用指向子类对象 -> 多态
        InterFu son = new InterFu() {
            @Override
            public void show() {
                System.out.println("匿名内部类实现的show方法");
            }
        };

        son.show();

        System.out.println("-------------------------------");
        //如何快速编写匿名内部类对象 : 从等号左边写,写到new 走提示
        InterFu son1 = new InterFu() {
            @Override
            public void show() {
                System.out.println("son1重写的show方法");
            }
        };

        son1.show();

        System.out.println("-------------------------------");
        //如何快速编写匿名内部类对象 : 从等号左边写,写到new 走提示
        InterFu son2 = new InterFu() {
            @Override
            public void show() {
                System.out.println("son1重写的show方法");
            }

        };

        son2.show();


    }

    public static void use(InterFu i){

    }
}
